The files in the speed directory test the speed of TMV code compared to 
BLAS (or sometimes the standard library when there is no corresponding
BLAS function), LAPACK and Eigen.

BLAS is of course the gold standard linear algebra library
for which there is often an optimized version for each system.
So I'm not too ashamed when my code isn't quite as fast as the BLAS
libraries on my system.  
But I try to usually be less than a factor of two slower.  :)
(And a surprising number of TMV routines are actually faster.)

LAPACK is the standard library for higher level linear algebra algorithms.
TMV usually uses the same algorithm as LAPACK, so it generally fares
pretty well in these tests.
Sometimes TMV uses a recursive algorithm which is faster for modern
architectures.  Plus, there are a couple of cases where LAPACK just
has a poor design.  Specifically its Bunch-Kauffman storage slows it 
down, and its QRP algorithm is much slower than TMV's, especially when
TMV is allowed to use its "loose" algorithm.

Eigen is a linear algebra library made by the KDE folks.  It uses
template meta-programming tricks much like TMV does, and does everything
inline, so it takes full advantage of as much compile-time knowledge as
possible.  Thus, it is a worthy comparison to TMV, especially comparing
well to the fulling inline compiliation of TMV.
It also has something similar to TMV's SmallMatrix as well.
Most TMV routines are faster than the corresponding Eigen routines,
or at worst a few percent slower in some cases.
Of course, I'm sure this statement is highly dependent on the compiler
used and the CPU, as well as the choice of functions that I am testing,
so it is possible that there are situations where Eigen significantly
outperforms TMV, but I don't know about them.

The speed test programs are not documented, and are not really part
of the TMV library.  I just use them to make sure the code is
adequately fast.  So if you want to run it, you will undoubtedly
need to edit the makefile to set it up with your compiler and set
the correct include directory for Eigen.  

Also, the programs only test one set of M,N and K at a time.  So I generally
edit the values of these parameters in the file, compile, and then run.
I try to do this for a wide range of values to probe the potential 
weaknesses of TMV.

TMV_Speed_1.cpp tests the "level 1" basic functions.
i.e. most of the level 1 BLAS functions, and a few others that act
on a single vector in (usually) linear time.

TMV_Speed_2.cpp test the "level 2" basic functions.
i.e. the level 2 BLAS functions, plus a few things that aren't in the 
BLAS library like adding two matrices, etc.

TMV_Speed_3.cpp test the "level 3" basic functions.
i.e. the level 3 BLAS functions.

TMV_Speed_4.cpp test the direct solvers of linear equations.
i.e. the LAPACK functions that involve LU decomposition, or something similar.

TMV_Speed_5.cpp test the least square solvers of linear equations.
i.e. the LAPACK functions that involve QR decomposition, or something similar.

TMV_Speed_6.cpp test the eigenvalue and SVD functions

